package com.ruoyi.training.mapper;

import java.util.List;
import com.ruoyi.training.domain.CertificateIssue;
import com.ruoyi.training.dto.certificate.CertificateIssueDto;
import com.ruoyi.training.vo.certificate.CertificateIssueVo;
import org.apache.ibatis.annotations.Param;

/**
 * 证书发放管理Mapper接口
 * 
 * @author hcc
 * @date 2025-11-06
 */
public interface CertificateIssueMapper 
{
    /**
     * 查询证书发放管理
     * 
     * @param certificateIssueId 证书发放管理主键
     * @return 证书发放管理
     */
    public CertificateIssue selectCertificateIssueByCertificateIssueId(String certificateIssueId);

    /**
     * 查询证书发放管理列表
     * 
     * @param certificateIssue 证书发放管理
     * @return 证书发放管理集合
     */
    public List<CertificateIssue> selectCertificateIssueList(CertificateIssue certificateIssue);

    /**
     * 新增证书发放管理
     * 
     * @param certificateIssue 证书发放管理
     * @return 结果
     */
    public int insertCertificateIssue(CertificateIssue certificateIssue);

    /**
     * 修改证书发放管理
     * 
     * @param certificateIssue 证书发放管理
     * @return 结果
     */
    public int updateCertificateIssue(CertificateIssue certificateIssue);

    /**
     * 删除证书发放管理
     * 
     * @param certificateIssueId 证书发放管理主键
     * @return 结果
     */
    public int deleteCertificateIssueByCertificateIssueId(String certificateIssueId);

    /**
     * 批量删除证书发放管理
     * 
     * @param certificateIssueIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCertificateIssueByCertificateIssueIds(String[] certificateIssueIds);

    /**
     * 查询证书发放管理列表
     *
     * @param certificateIssueVo 证书发放管理
     * @return 列表
     */
    public List<CertificateIssueDto> getCertificateIssueList(CertificateIssueVo certificateIssueVo);

    /**
     * 根据证书发放管理id查询证书发放管理列表
     *
     * @param certificateIssueIds 证书发放管理id
     * @return 列表
     */
    public List<CertificateIssueDto> selectCertificateIssueByCertificateIssueIds(String[] certificateIssueIds);

    /**
     * 批量更新证书发放管理
     *
     * @param certificateIssueList 证书发放管理列表
     * @return 更新结果
     */
    public int updateCertificateIssueBatch(List<CertificateIssue> certificateIssueList);

    /**
     * 根据证书发放管理id批量更新证书发放管理
     *
     * @param certificateIssueIds 证书发放管理id
     * @return 更新结果
     */
    public int updateByCertificateIssueIds(String[] certificateIssueIds);

    /**
     * 根据学生id和项目id查询证书发放管理
     *
     * @param studentId 学生id
     * @param projectId 项目id
     * @return 证书发放管理
     */
    public CertificateIssue getByStudentIdAndProjectId(@Param("studentId") String studentId, @Param("projectId") String projectId);

    /**
     * 根据学生id和项目id查询证书发放管理
     *
     * @param studentId 学生id
     * @return 证书发放管理
     */
    public List<CertificateIssue> getByStudentId(@Param("studentId") String studentId);

    /**
     * 根据报名id查询证书发放管理
     *
     * @param registrationId 报名id
     * @return 列表
     */
    public CertificateIssue selectCertificateIssueByRegistrationId(String registrationId);
}
